// mixins/paste.js
export default {
  data() {
    return {
      __pasteTimer: null,
      __lastClipboard: ''
    };
  },

  methods: {
    /**
     * 启动监听粘贴行为（H5 / App 通用）
     * @param {HTMLElement|String} elSelector - 绑定的 textarea 或 input 元素或其选择器
     * @param {Function} callback - 回调函数，参数为粘贴的文本
     */
    startPasteListener(elSelector, callback) {
      const cb = callback || (() => {});
      let el = typeof elSelector === 'string'
        ? document.querySelector(elSelector)
        : elSelector;

      if (!el) {
        console.warn('[paste mixin] 未找到元素', elSelector);
        return;
      }

			// H5 端监听 paste 事件
			// #ifdef H5
			el.addEventListener('paste', (e) => {
				const text = e.clipboardData.getData('text');
				if (text) cb(text);
			});
			// #endif

      // App 端使用 plus.clipboard 检测
      // #ifdef APP-PLUS
      const checkClipboard = () => {
        plus.clipboard.getData({
          success: (res) => {
            const text = res.data?.trim?.() || '';
            if (!text) return;

            const val = el.value || '';
            if (val.includes(text) && text !== this.__lastClipboard) {
              this.__lastClipboard = text;
              cb(text);
            }
          }
        });
      };

      el.addEventListener('focus', () => {
        if (this.__pasteTimer) clearInterval(this.__pasteTimer);
        this.__pasteTimer = setInterval(checkClipboard, 700);
      });

      el.addEventListener('blur', () => {
        clearInterval(this.__pasteTimer);
        this.__pasteTimer = null;
      });
      // #endif
    },

    /**
     * 停止监听（手动调用可选）
     */
    stopPasteListener() {
      // #ifdef APP-PLUS
      clearInterval(this.__pasteTimer);
      this.__pasteTimer = null;
      // #endif
    }
  },

  beforeDestroy() {
    this.stopPasteListener();
  }
};
